//==========================================================================
// Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
//==========================================================================
#if _MSC_VER > 1000
#pragma once
#endif

#ifndef __CWIN32SOCKETSERVICE_H__
#define __CWIN32SOCKETSERVICE_H__

#define _NO_CWIN32SOCKETSERVICE_CLASSOBJECT_
#include "_CWin32SocketService.h"

CarClass(CWin32SocketService)
//class CWin32SocketService : public _CWin32SocketService
{
public:
	CARAPI_(UInt32) AddRef();
    CARAPI_(UInt32) Release();
    CWin32SocketService():m_cRef(0) {}
    ~CWin32SocketService();
    CARAPI constructor();
    
    CARAPI GetIPAddresses(
        /* [out] */ IPv4Address * pIpAddr,
        /* [out] */ IPv4Address * pNetmask,
        /* [out] */ IPv4Address * pGateway,
        /* [out] */ IPv4Address * pDns1,
        /* [out] */ IPv4Address * pDns2);

    CARAPI CreateSocket(
        /* [in] */ Int32 family,
        /* [in] */ Int32 type,
        /* [in] */ Int32 protocol,
        /* [out] */ ISocket ** ppNewSocket,
        /* [out] */ Int32 * pError);

    CARAPI WaitForSockets(
        /* [in] */ const SocketTime & timeout,
        /* [in] */ const BufferOf<IInterface *> & sockets,
        /* [in] */ const MemoryBuf & eventRequests,
        /* [out] */ MemoryBuf* pEventResponses,
        /* [out] */ Int32* error);

private:
    // TODO: Add your private member variables here.
    Int32 m_cRef;
};

#endif // __CWIN32SOCKETSERVICE_H__
